package fr.uniscol.siecle.readers;

import java.util.List;

import org.apache.log4j.Logger;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.filter.Filters;
import org.jdom2.xpath.XPathExpression;
import org.jdom2.xpath.XPathFactory;

import fr.uniscol.siecle.model.Academie;
import fr.uniscol.siecle.model.Commune;
import fr.uniscol.siecle.model.FichierExportSiecle;
import fr.uniscol.siecle.model.FichierExportSiecleEtablissements;
import fr.uniscol.siecle.model.FichierExportSiecleNomenclatures;
import fr.uniscol.siecle.model.FichierExportSiecleStructures;
import fr.uniscol.siecle.model.Pays;
import fr.uniscol.siecle.model.UAJ;

public class FichierSIECLEEtablissementsReader extends FichierSIECLEReader {
	
	private Logger log = Logger.getLogger(FichierSIECLEEtablissementsReader.class);
	
	public FichierExportSiecle readFromDOM(Document dom) {
		
		FichierExportSiecleEtablissements etablissements = new FichierExportSiecleEtablissements();
		
		etablissements.readParametresFromDOM(dom);
		
		/*XPathExpression<Element> xp = XPathFactory.instance().compile("//DONNEES/ACADEMIES/ACADEMIE", Filters.element());
		
		log.debug("Evaluate xp: " + xp.getExpression());
		
		List<Element> eAcademies = xp.evaluate(dom);
		
		log.debug("Academies : " + eAcademies);*/
		
		Element eDonnes = dom.getRootElement().getChild("DONNEES");
		List<Element> eAcademies = eDonnes.getChild("ACADEMIES").getChildren();
		
		Element eEtabs = null;
		List<Element> eListEtabs = null;
		
		Academie aca = null;
		UAJ uaj = null;
		for(Element eAc : eAcademies){
			try{
				aca = new Academie(eAc.getChildText("CODE_ACADEMIE"), "");
				
			}catch(NumberFormatException nex){
				nex.printStackTrace();
				continue;
			}
			
			log.debug("ACADEMIE: " + aca);
			
			eEtabs = eAc.getChild("ETABLISSEMENTS");
			if(eEtabs == null){
				continue;
			}
			
			for(Element eEt : eEtabs.getChildren()){
				uaj = new UAJ(eEt.getAttributeValue("CODE_RNE"));
				uaj.setAcademie(aca);
				uaj.setSecteur(eEt.getChildText("CODE_SECTEUR"));
				uaj.setDenominationPrincipale(eEt.getChildText("DENOM_PRINC"));
				uaj.setDenominationComplete(eEt.getChildText("DENOM_COMPL"));
				uaj.setAdresse1(eEt.getChildText("LIGNE1_ADRESSE"));
				uaj.setAdresse2(eEt.getChildText("LIGNE2_ADRESSE"));
				uaj.setAdresse3(eEt.getChildText("LIGNE31_ADRESSE"));
				uaj.setBoitePostale(eEt.getChildText("BOITE_POSTALE"));
				uaj.setMail(eEt.getChildText("MEL"));
				uaj.setTelephone(eEt.getChildText("TELEPHONE"));
				if(eEt.getChild("CODE_COMMUNE_INSEE") != null){
					uaj.setCommune(new Commune(eEt.getChildText("CODE_COMMUNE_INSEE"), ""));
				}
				if(eEt.getChild("CODE_PAYS") != null){
					uaj.setPays(new Pays(Integer.parseInt(eEt.getChildText("CODE_PAYS")), ""));
				}
				etablissements.getEtablissements().add(uaj);
				
				log.debug("ACADEMIE: " + aca.getCode() + " UAJ:" + uaj);
			}
		}
		
		return etablissements;
	}
}
